In commercial document production shops it is often necessary to render jobs containing large numbers of documents. Such rendering often presents complex problems: pieces may have multiple proportional fonts, non-trivial layout requirements, graphics and different color printing. Furthermore, the pieces produced must meet acceptable typographic standards. It is also desirable to be able to print pieces in large volumes typically measured in hundreds or thousands of pieces per hour. Such pieces must be designed for volume production in that individual pieces should not have to be individually crafted.
The printing of large volume jobs wherein documents containing variable data fields are being produced presents a problem in that, while tools exist which can create variable data field documents, no tool exists which is able to do so efficiently for jobs containing large numbers of documents.
Typically, such jobs are printed by having the variable data fields preprinted via a laser printer and having the remainder of the letter common to all copies done on an offset press. One problem with such a strategy is that the color of most laser printing is not an exact match for the color of the offset press, and second, there may be incompatibilities between the paper which needs to be used for that laser printing process and the paper which needs to be used for the offset process based on the ink used. Lastly, fonts used to print the variable data fields on a laser printer may not match the fonts used in the offset process and the relative positions of the laser preprinted variable portions of the letter may not line up in an exact way with the portions printed by the offset process.
It is therefore desirable that a tool be created which can handle print jobs in large volume having variable data fields. The Portable Document Format (PDF) language is useful for creating documents for rendering devices being driven by a PDF language interpreter. The PDF language, however, does not provide a facility for variable data fields. This invention provides the capability of adding variable data fields to a document specified in the PDF language. In addition, the capability of modifying the appearance of any given element, within the limitations of the PDF language, is provided.
A process is herein disclosed in which a document described by a stream of lexographic language statements can be made to have variable data fields as well as attributes which can be dynamically changed. The settings of the various attributes of the graphical elements which can be dynamically varied, and the variable data which is inserted in variable graphic elements may be contained in an outside data source.
A lexographic language is a structured, textual language providing the means to describe a graphic rendering process via text. To accomplish the objectives of this invention, it is first necessary to create a mapping of graphical elements of an image described by a stream of such lexographic language statements to the statements within the stream that created each element. A graphic element may be defined as, for example, a segment of text or a non-textual element. As the stream of lexographic language statements is sequentially read, a sequence of graphical states is kept which defines the attributes of the graphical elements to be displayed, as defined by the underlying lexographic language stream at any point within the stream. When a lexographic language statement is encountered which causes a graphic element to be displayed, a linking is created between the display of the graphic element, the current graphical state and the lexographic language statement which causes the display to occur.
Once this process has been completed for the entire file, the display of the output is marked up by a human. The marking includes the identification of those graphic elements which are to be variable, and also those graphic elements whose display attributes are going to be controlled by an outside data source, as well as the specification of which attributes are to be controlled. As an example, the salutation of a letter may be marked as being xe2x80x9cvariable,xe2x80x9d such that a list of persons to whom the letter is to be sent will generate a sequence of letters having the same body of text but a different salutation. Once the display of the letter is marked and the value for the attributes of the graphic elements are known, the data which controls the appearance of the graphic elements according to the attributes is merged into an output stream which creates a sequence of documents identical to the original document, except for the marked graphic elements.
During the merge step, sets of data values are read from an outside data source which correspond to the attributes defined for any given graphical element. For example, if a graphical text element is defined as being variable, then a text segment is read from a data file and applied to the graphic element. In order to accomplish the change from the original graphical element to the new graphical element, a set of modifications to the original stream of lexographic language characters is defined. This is known as a transformation. By applying the transformations to the original stream, an output stream of lexographic language statements is created based on the set of data read. For each set of data, a new stream substantially identical to the original stream, but for the transformations, is created.